package com.andkrup.web.application {
	import com.andkrup.web.navigation.Navigator;	
	import com.andkrup.web.ui.IUiManager;	
	
	/**
	 * @author Andkrup
	 */
	public interface IMainApplication {
		/**
		 * Read/Write property. Use this to get a reference to a IMainLoader
		 */
		function get mainLoader():IMainLoader;
		/**
		 * Read/Write property. Use this to set the reference to a IMainLoader
		 */
		function set mainLoader(value:IMainLoader):void;
		/**
		 * Read/Write property. Use this to delegate interface creation/management
		 */
		function get uiManager():IUiManager;
		/**
		 * Read/Write property. Use this to delegate interface creation/management
		 */
		function set uiManager(value:IUiManager):void;
		/**
		 * Read/Write property. Use this to delegate interface navigation
		 */
		function get navigator():Navigator;
		/**
		 * Read/Write property. Use this to delegate interface navigation
		 */
		function set navigator(value:Navigator):void;
		/**
		 * Template method. Implementators can call this method in their
		 * constructor, to force inclusion of dynamically loaded definitions.
		 * 
		 * See example implementation in MainApplication
		 */
		function includeDefinitions():void;
	}
}
